package com.niit.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import feign.Logger;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @Author： 曾渝晋
 * @date: 2021/6/16 1:07 上午
 * @description:
 * @modified:
 * @Version: 1.0
 */
public class FeignConfigBean {
    /**
     * 配置负载均衡实现RestTemplate
     * 实现IRule方法
     * RoundRobinRule 轮询 默认
     * RandomRule 随机
     * AvailabilityFilterRule 先过滤访问故障的服务，对剩下进行轮询
     * RetryRule 先按照轮询获取服务，如果服务获取失败，会在指定的时间内进行重试
     * @return
     */
    @Bean
    @LoadBalanced //使消费者自带负载均衡,该接口使用了Ribbon默认的轮询
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    /**
     * 全局配置
     * 配置消费端在调用服务提供方时采用统一的访问策略
     */
    @Bean
    public IRule ribbonRule(){
        return new RandomRule();
    }

    /**
     * 设置日志级别
     * @return
     */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.BASIC;
    }
}
